home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 3 / Amiga Tools 3.iso / grafik / videotracker / sourceaga / palettefade.s < prev    next >
Encoding:
Text File  |  1994-06-27  |  39.2 KB  |  1,952 lines

  1. ;palettefade
  2.  
  3. rout            ;when this is off, the routine-file will be
  4.             ;assembled, on=testing
  5.             
  6. ;debug            ;when this is on, colors in the background will
  7.             ;show how much time the routine needs.
  8.  
  9. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  10.  
  11. ;ocs            ;off=AGA,on=OCS, testing not possible on OCS !
  12.  
  13. routinemode    equ    300    ;the routinemode !
  14.  
  15.  
  16. ; VideoTracker AGA developer source 25-12-93
  17. ; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
  18. ; wich makes low-resolution overscan a bit ugly.
  19. ; no "interactive" support anymore, it's only used by Kick 1.3 users.
  20.  
  21. ; the first part of the source handles the things that are necessary to
  22. ; show the picture/copper and playing of the routine.
  23. ; the part between the "***" lines is the routine-source.
  24. ; at the bottom of the file, there are the necessary incbin-files who
  25. ; are needed to test the routine.
  26. ; these are saved with "save effect" in videotracker. they are raw
  27. ; data files which can be fonts,pictures,landscapes,vectorobjects
  28. ; etcetra.
  29. ; the incbin-files are put in the "variables" table, in the routine-
  30. ; player-handler
  31. ; the place where it's done can be found by searching for "!!!"
  32.  
  33. ;    opt    a+    ;devpac 3 optimize
  34.     opt    o+
  35.  
  36. vew_wid    equ    48
  37. vew_hgt    equ    290
  38. win_hgt    equ    117
  39. win_str    equ    $1a
  40.  
  41.         ifd    ocs
  42. pic_wid        equ    4        ;wide in bytes
  43. pic_hgt        equ    6        ;hoogte
  44. pic_dpt        equ    8        ;number planes
  45. pic_ani        equ    10        ;aantal effes (anim)
  46. pic_vew        equ    12        ;viewmode
  47. pic_cycstr    equ    14        ;cycle start (*4)
  48. pic_cycend    equ    15        ;cycle end (*4)
  49. pic_cycspd    equ    16        ;cycle speed (*4)
  50. pic_cycadd    equ    17        ;cycle add (*4)
  51. pic_palnum    equ    30        ;aantal kleuren
  52. pic_pal        equ    32        ;palette start
  53. pic_palsiz    equ    256*2        ;vaste palette size
  54. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  55.         endc
  56.         
  57.         ifnd    ocs
  58. pic_wid        equ    4        ;wide in bytes
  59. pic_hgt        equ    6        ;hoogte
  60. pic_dpt        equ    8        ;number planes
  61. pic_ani        equ    10        ;aantal effes (anim)
  62. pic_vew        equ    12        ;viewmode
  63. pic_cycstr    equ    14        ;cycle start (*8)
  64. pic_cycend    equ    15        ;cycle end (*8)
  65. pic_cycspd    equ    16        ;cycle speed (*8)
  66. pic_cycadd    equ    17        ;cycle add (*8)
  67. pic_widmod    equ    46        ;animation-width modulo
  68. pic_future    equ    50        ;free future space
  69. pic_palnum    equ    62        ;aantal kleuren
  70. pic_pal        equ    64        ;palette start
  71. pic_palsiz    equ    256*4        ;vaste palette size (longwords)
  72. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  73.         endc
  74.         
  75. var_len        equ    $300        ;lengte vartabel
  76.  
  77. var__GfxBase    equ    $000        ;graphics lib
  78. var_pic1    equ    $004        ;current picture
  79. var_anispd1    equ    $008        ;animspeed
  80. var_anitel1    equ    $00c        ;animcount
  81. var_cprbck    equ    $010        ;copperback
  82. var_bck        equ    $014        ;background
  83. var_pic2    equ    $018        ;current picture
  84. var_ntsc    equ    $01c        ;ntsc/pal frequence
  85. var_lnd        equ    $020        ;landscape
  86. var_anilop1    equ    $024
  87. var_rottrg    equ    $028        ;effect trigger
  88. var_txt1    equ    $040        ;text
  89. var_txt16    equ    15*4+var_txt1
  90. var_vec1    equ    $080        ;vectors
  91. var_vec16    equ    15*4+var_vec1
  92. var_fon1    equ    $0c0        ;fonts
  93. var_fon16    equ    15*4+var_fon1
  94. var_cols1    equ    $100        ;colorsets
  95. var_cols16    equ    15*4+var_cols1
  96. var_obj1    equ    $180        ;objects
  97. var_obj16    equ    15*4+var_obj1
  98.  
  99.     ifd    rout
  100.     ;videotracker routine-test
  101.  
  102.     incdir    "w:include/"
  103.     include    "exec/types.i"
  104.     include    "graphics/gfxbase.i"
  105.     include    "lvo/graphics_lib.i"
  106.     incdir    'videotracker:effect/'
  107.  
  108.     SECTION    1,CODE_C
  109. tus
  110.     move.l    #rotpt1,curpic1        ;picture !!!
  111.     move.l    #rotpt1,curpal1        ;picture !!!
  112.     bsr    paltabres
  113.     
  114.     move.l    ($4).w,a6
  115.     sub.l    a1,a1
  116.     jsr    -$126(a6)        ;findtask
  117.     move.l    d0,curtsk
  118.     move.l    d0,a0
  119.     move.l    $b8(a0),tskpri
  120.  
  121.     lea    dosnam,a1        ;doslib openen
  122.     moveq.l    #0,d0
  123.     move.l    (4).w,a6
  124.     jsr    -408(a6)        ;openlib
  125.     move.l    d0,doslib
  126.  
  127.     bsr.s    label5            ;videotracker opstarten
  128.     
  129.     move.l    curtsk,a0
  130.     move.l    tskpri,$b8(a0)
  131.     move.l    ($4).w,a6
  132.     jsr    -$84(a6)        ;forbid
  133.  
  134.     move.l    doslib,a1
  135.     move.l    (4).w,a6
  136.     jsr    -414(a6)        ;closelib
  137.  
  138.     moveq.l    #0,d0
  139.     rts
  140.     
  141. label5
  142.     move.l    (4).w,a6        ;workbench gedoe
  143.  
  144.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  145.  
  146.     ifd    ntsctest
  147.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  148.     endc
  149.  
  150.     cmp.b    #50,ntscmode        ;ntsc ?
  151.     beq.s    str.ntsc
  152.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  153. str.ntsc
  154.  
  155.     lea    cprjmp,a2        ;copjmp zetten !
  156.     move.l    #cprbck-8,d0
  157.     move.w    d0,6(a2)
  158.     swap    d0
  159.     move.w    d0,2(a2)
  160.  
  161.     lea    cprbck-8,a2        ;copstr zetten !
  162.     move.l    #cpr,d0
  163.     move.w    d0,6(a2)
  164.     swap    d0
  165.     move.w    d0,2(a2)
  166.  
  167.     bsr    cprsprrem        ;sprites legen
  168.  
  169.     lea    gfxnam,a1        ;graphics lib openen
  170.     move.l    (4).w,a6
  171.     jsr    -408(a6)        ;openlib
  172.     move.l    d0,a6
  173.     move.l    d0,gfxlib
  174.     move.l    38(a6),oldcprlist
  175.  
  176.     bset    #1,$bfe001
  177.     bsr    copbuf            ;copper vullen
  178.  
  179.     bsr    sysoff
  180.  
  181. gadrun
  182.     btst    #6,($bfe001).l
  183.     bne    gadrun
  184.  
  185. scrend
  186. scrend.play
  187.     bsr    syson
  188.  
  189.     move.l    gfxlib,a1
  190.     move.l    (4).w,a6
  191.     jsr    -414(a6)        ;closelib
  192.  
  193. scrend.qb
  194.     moveq.l    #0,d0    
  195.     rts
  196.     
  197.     ;vertical blank interrupt, no blits.
  198.     ;handles counters,interlace,sprite
  199.     ;level 3
  200.  
  201. intvb
  202.     bra.s    intvb.cnt
  203.     dc.l    'VIDU'
  204.     dc.l    'LOOP'
  205. intvb.cnt
  206.     movem.l    d0-d7/a0-a6,-(sp)
  207.     lea    ($dff000).l,a6
  208.  
  209.     move.w    $01e(a6),d0
  210.     btst    #5,d0            ;vblank ?
  211.     bne.s    intvb.vb
  212.  
  213.     bra.s    intcop.end
  214.  
  215. intvb.vb
  216.     bsr    grap
  217.     bsr    palctr            ;palette zetten
  218.     bsr.s    copbuf            ;copper vullen
  219.     
  220. intvb.end
  221.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  222.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  223.     rte
  224.  
  225. intcop.end
  226.     movem.l    (sp)+,d0-d7/a0-a6
  227.     move.l    intvbold,-(sp)
  228.     rts
  229.  
  230.     ;transmission buffer empty routine, BLIT !
  231.     ;handles routines,animations
  232.     
  233. inttbe                    ;tbe interrupt
  234.     movem.l    d0-d7/a0-a6,-(sp)
  235.     lea    ($dff000).l,a6
  236.  
  237.     move.w    $01e(a6),d0
  238.     btst    #0,d0            ;no tbe ?
  239.     beq.s    intdskblk
  240.  
  241.  
  242.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  243.     beq.s    inttbe.cop
  244.     btst    #2,($dff016).l
  245.     beq.s    inttbe.cop
  246.  
  247.     ifd    debug
  248.     move.w    #$700,$dff180
  249.     endc
  250.     
  251.     bsr    rotply            ;routineplayer BLIT !
  252.     bsr.s    copbuf            ;copper vullen
  253.  
  254.     ifd    debug
  255.     move.w    #$070,$dff180
  256.     endc
  257.     
  258. inttbe.cop
  259.  
  260. inttbe.end
  261.     move.w    #$0001,$09c(a6)
  262.     movem.l    (sp)+,d0-d7/a0-a6
  263.     rte
  264.  
  265. intdskblk
  266.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  267.     movem.l    (sp)+,d0-d7/a0-a6
  268.     move.l    inttbeold,-(sp)
  269.     rts
  270.  
  271.  
  272.     ;moves the copperbuffer to the copperlist
  273.     ;sort of double buffering
  274.     
  275. copbuf
  276.     movem.l    d0-d7/a0-a6,-(sp)
  277.  
  278.     lea    ($dff000).l,a6
  279.  
  280. copbuf.novb                ;copperchange overslaan
  281.     moveq.l    #0,d0
  282.     move.b    $005(a6),d0
  283.     lsl.w    #8,d0
  284.     moveq.l    #0,d1
  285.     move.b    $006(a6),d1
  286.     add.w    d1,d0
  287.  
  288.     cmp.w    #$4,d0            ;lower limit, all stations 100%
  289.     blt    copbuf.novb
  290.  
  291.     cmp.b    #50,ntscmode
  292.     beq.s    copbuf.pal
  293.     cmp.w    #$133-72-8,d0        ;ntsc grens
  294.     bge    copbuf.novb
  295.     bra.s    copbuf.cont
  296. copbuf.pal
  297.     cmp.w    #$133-8,d0        ;pal grens
  298.     bge    copbuf.novb
  299. copbuf.cont
  300.  
  301.     lea    gra.s,a0        ;buffer copieren
  302.     lea    cprbuf,a1
  303. copbuf_aga                ;AGA stuff :)
  304.     move.l    #(gra.ql)/4-1,d0
  305. copbuf.a
  306.     move.w    2(a0),2(a1)
  307.     add.l    #4,a0
  308.     add.l    #4,a1
  309.     dbra    d0,copbuf.a
  310.  
  311. copbuf.end
  312.     movem.l    (sp)+,d0-d7/a0-a6
  313.     rts
  314.  
  315.     ;goes back to the workbench
  316.     
  317. syson
  318.     movem.l    d0-d7/a0-a6,-(sp)
  319.  
  320.     move.w    #$0001,$dff09a        ;tbeint uit
  321.     move.l    intvbold,($6c).w
  322.     move.l    inttbeold,($64).w
  323.  
  324.     move.l    4,a6
  325.     jsr    -138(a6)        ;permit
  326.  
  327.     move.l    gfxlib,a6
  328.     jsr    -462(a6)        ;disownblitter
  329.  
  330.     move.l    wbview,a1
  331.     move.l    gfxlib,a6
  332.     jsr    _LVOLoadView(a6)     ; Fix view
  333.     jsr    _LVOWaitTOF(a6)
  334.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  335.  
  336. syson.ras
  337.     cmp.b    #$c0,$dff006        ;prevent copperjump
  338.     bne    syson.ras
  339.  
  340.     move.l    gfxlib,a6
  341.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  342.  
  343.     movem.l    (sp)+,d0-d7/a0-a6
  344.     rts
  345.     
  346.     ;goes back to the gadgetscreen
  347.     
  348. sysoff
  349.     movem.l    d0-d7/a0-a6,-(sp)
  350.      
  351.     move.l    gfxlib,a6
  352.     move.l    gb_ActiView(a6),wbview    ;current view
  353.     sub.l    a1,a1            ; clear a1
  354.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  355.     jsr    _LVOWaitTOF(a6)     ; Wait once
  356.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  357.  
  358.     move.l    gfxlib,a6
  359.     jsr    -456(a6)        ;ownblitter
  360.  
  361.     move.l    4,a6
  362.     jsr    -132(a6)        ;forbid
  363.         
  364.     move.l    ($6c).w,intvbold
  365.     move.l    #intvb,($6c).w
  366.     move.l    ($64).w,inttbeold
  367.     move.l    #inttbe,($64).w
  368.     move.w    #$8001,$dff09a        ;tbeint aan
  369.     bsr    gracpr            ;reset copper
  370.     bsr    copbuf            ;copy copper
  371.     move.l    #cpr,$dff080
  372.  
  373.     movem.l    (sp)+,d0-d7/a0-a6
  374.     rts
  375.     
  376. cprsprrem
  377.     movem.l    d0-d7/a0-a6,-(sp)
  378.     lea    cprspr,a0
  379.     move.l    #sprdat,d0
  380.     move.w    #7,d1
  381. cprsprrem.a
  382.     move.w    d0,3*2(a0)
  383.     swap    d0
  384.     move.w    d0,1*2(a0)
  385.     swap    d0
  386.     add.l    #8,a0
  387.     dbra    d1,cprsprrem.a
  388.     movem.l    (sp)+,d0-d7/a0-a6
  389.     rts
  390.  
  391. varset                    ;variablen neerzetten
  392.     movem.l    d0-d7/a0-a6,-(sp)
  393.     move.l    #var,a0
  394.  
  395.     move.l    #cprbck,var_cprbck(a0)
  396.     move.l    gfxlib,var__GfxBase(a0)
  397.     move.b    ntscmode,var_ntsc(a0)
  398.  
  399.     move.l    curpic1,var_pic1(a0)    ;variabel
  400.     move.l    curpic2,var_pic2(a0)    ;variabel
  401.     move.w    anispd1,var_anispd1(a0)
  402.     move.w    anitel1,var_anitel1(a0)
  403.     move.b    anilop1,var_anilop1(a0)
  404.     move.l    #rottrg,var_rottrg(a0)
  405.     movem.l    (sp)+,d0-d7/a0-a6
  406.     rts
  407.     
  408.     ;this routine handles all videotracker-routines
  409.  
  410. rotply    
  411.     movem.l    d0-d7/a0-a6,-(sp)
  412.  
  413.     moveq.l    #0,d0
  414.  
  415.     lea    currot1,a2        ;routine 1
  416.     move.w    rotinf1,d0        ;routine info
  417.     bsr.s    rotplyr
  418.  
  419. rotply.end
  420.     movem.l    (sp)+,d0-d7/a0-a6
  421.     rts
  422.  
  423.     ;this routine handles 1 routine, BLIT !
  424.     
  425. rotplyr
  426.     movem.l    d0-d7/a1-a6,-(sp)
  427.  
  428.     move.l    #rot,(a2)        ;routinestart address !!!
  429.  
  430. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  431.     clr.l    curpic2            ;background picture
  432.     move.w    #1,anispd1        ;animationspeed
  433.     clr.w    anitel1            ;animation position
  434.  
  435.     lea    var,a0            ;communication-table
  436.     move.l    #rotst2,var_cols1(a0)    ;colorset !!!
  437.     move.l    #rotst1,var_cols1+4(a0)    ;colorset !!!
  438.     move.l    #rotpt1,curpic1        ;picture !!!
  439.     move.l    #rotpt1,curpal1        ;picture !!!
  440. ;    move.b    #0,anilop1        ;animloop off/on !!!
  441. ;    move.w    #32,anispd1        ;animdelay !!!
  442.     move.l    #routinemode,d0        ;routinemode !!!
  443.  
  444.     sub.l    a0,a0            ;picture info legen
  445.  
  446.     tst.l    (a2)            ;is er een routine ?
  447.     beq    rotplyr.end        ;interlace handling
  448.  
  449.     move.l    intdel,d2        ;delay
  450.     move.l    inttel,d1        ;teller
  451.     cmp.w    d2,d1
  452.     blt    rotplyr.end
  453.     clr.l    inttel
  454.                 
  455.     bsr    varset            ;variabelen updaten
  456.  
  457.     move.l    (a2),a1            ;routine halen
  458.     move.l    #var,a0            ;variablen tabel
  459.  
  460.     movem.l    d3-d7/a1-a6,-(sp)
  461.     moveq.l    #0,d1            ;vars wissen
  462.     moveq.l    #0,d2
  463.     moveq.l    #0,d3
  464.     moveq.l    #0,d4
  465.     moveq.l    #0,d5
  466.     moveq.l    #0,d6
  467.     moveq.l    #0,d7
  468.     sub.l    a2,a2
  469.     sub.l    a3,a3
  470.     sub.l    a4,a4
  471.     sub.l    a5,a5
  472.  
  473.     jsr    4(a1)            ;routine afwerken
  474.     movem.l    (sp)+,d3-d7/a1-a6
  475.  
  476.     ;Routine:
  477.     ;
  478.     ;Input:
  479.     ;a0=variabelentabel
  480.     ;d0=routinemode
  481.     ;
  482.     ;Output:
  483.     ;a0=picture
  484.     ;d1=copperlist
  485.     ;d2=interruptdelay        (NOT used till now)
  486.     
  487.     move.w    #$0020,$dff09a        ;vb off !
  488.  
  489.     move.l    d2,intdel        ;delay
  490.  
  491.     lea    cprjmp,a3
  492.     move.l    #cprbck-8,d0
  493.  
  494.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  495.     bne.s    rotplyr.nocop
  496.     tst.l    d1            ;copperlist ?
  497.     beq.s    rotplyr.nocop
  498.     move.l    d1,d0
  499. rotplyr.nocop
  500.     move.w    d0,6(a3)
  501.     swap    d0
  502.     move.w    d0,2(a3)
  503.  
  504.     cmp.l    #0,a0            ;picture ?
  505. ;    beq.s    rotplyr.endvb
  506.     beq.s    rotplyr.set
  507.  
  508.     move.l    a0,curpal1        ;current palette
  509.  
  510.     move.l    #rotpt1,a0        ;picture !!!
  511.  
  512.     move.l    (a0),a1
  513.     cmp.l    #'PALE',(a1)        ;palette ?
  514.     beq    rotplyr.set
  515.  
  516.     move.l    a0,curpic1        ;current picture (cycle)
  517.     tst.b    rotdpl            ;plane is geleverd
  518.     beq.s    rotplyr.set
  519.     clr.l    cycdel1            ;cycle info wissen
  520.     clr.l    4+cycdel1
  521.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  522. rotplyr.set
  523.     clr.b    rotdpl
  524.     clr.b    dplctr
  525.     bsr.s    grap
  526.     bsr    grac            ;colorset
  527. rotplyr.endvb
  528.     move.w    #$8020,$dff09a
  529. rotplyr.end
  530.     movem.l    (sp)+,d0-d7/a1-a6
  531.     rts
  532.  
  533.     ;removes possible routine-coppers
  534.     
  535. gracpr
  536.     movem.l    d0-d7/a0-a6,-(sp)
  537.     lea    cprjmp,a3
  538.     move.l    #cprbck-8,d0        ;copperlist resetten
  539.     move.w    d0,6(a3)
  540.     swap    d0
  541.     move.w    d0,2(a3)
  542.     movem.l    (sp)+,d0-d7/a0-a6
  543.     rts
  544.  
  545. grap                    ;d7=anim
  546.     movem.l    d0-d7/a0-a6,-(sp)
  547.  
  548.     clr.l    d7
  549.  
  550.     tst.l    curpic1            ;current picture ?
  551.     beq    grap.end
  552.  
  553.     move.l    curpic1,a2        ;normal pic halen
  554.  
  555.     lea    gracprscr,a1        ;window neerzetten
  556.     move.l    hogscr,d1
  557.  
  558.     move.w    pic_hgt(a2),d3        ;pic hoogte
  559.     move.w    pic_vew(a2),d5
  560.     btst    #2,d5            ;interlace ?
  561.     beq.s    grap.nohi4
  562.     lsr.w    #1,d3            ;/2
  563. grap.nohi4
  564.     cmp.w    d3,d1
  565.     bge.s    grap.hog
  566.     move.w    d1,d3
  567. grap.hog
  568.     sub.w    d3,d1
  569.     lsr.w    #1,d1
  570.     add.w    #win_str,d1
  571.     move.w    d1,d2
  572.     add.w    d3,d2
  573.  
  574.     move.b    d1,2(a1)        ;y start
  575.     move.b    d2,6(a1)        ;y end
  576.  
  577.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  578.     lsl.l    #3,d4
  579.  
  580.     move.l    #vew_wid*8,d0
  581.     move.l    #0,d1
  582.     move.l    #$61,d6
  583.  
  584.     cmp.w    #40,pic_wid(a2)        ;overscan ?
  585.     ble.s    grap.noov1
  586.     move.l    #$41,d6
  587. grap.noov1
  588.  
  589.     move.w    pic_vew(a2),d5
  590.     btst    #15,d5            ;hires ?
  591.     beq.s    grap.nohi2
  592.  
  593.     move.l    #(vew_wid)*8*2,d0
  594.     move.l    #1,d1
  595.     move.l    #$61,d6
  596.  
  597.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  598.     ble.s    grap.nohi2
  599.     move.l    #(vew_wid)*8*2,d0
  600.     move.l    #$51,d6
  601.  
  602.     bra.s    grap.noshi2
  603. grap.nohi2    
  604.     btst    #6,d5            ;super hires ?
  605.     beq.s    grap.noshi2
  606.  
  607.     move.l    #(vew_wid)*8*4,d0
  608.     move.l    #2,d1
  609.     move.l    #$61,d6
  610.  
  611.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  612.     ble.s    grap.noshi2
  613.     move.l    #(vew_wid)*8*4,d0
  614.     move.l    #$51,d6
  615.  
  616. grap.noshi2    
  617.  
  618.     clr.w    d5
  619.     cmp.w    d0,d4            ;breeder dan scherm ?
  620.     ble.s    grap.c
  621.     move.w    d4,d5
  622.     move.w    d0,d4
  623.     sub.w    d0,d5            ;modulo
  624.     lsr.w    #3,d5            ;/8
  625. grap.c
  626.     lsr.w    d1,d0
  627.     lsr.w    d1,d4
  628.  
  629.     move.w    d0,d2
  630.     sub.w    d4,d2
  631.     lsr.w    #1,d2            ;/2
  632.  
  633.     add.w    d6,d2
  634.     move.b    d2,3(a1)        ;x start
  635.     move.w    d2,d3            ;d3 bewaren !
  636.  
  637.     add.w    d4,d2            ;d4 bewaren !
  638.     move.b    d2,7(a1)        ;x end
  639.     
  640.     move.w    pic_vew(a2),d6
  641.     btst    #15,d6            ;hires ?
  642.     beq.s    grap.nohi5    
  643.     add.l    d4,d4            ;*2
  644.     bra.s    grap.noshi5
  645. grap.nohi5
  646.     btst    #6,d6            ;super hires ?
  647.     beq.s    grap.noshi5    
  648.     add.l    d4,d4            ;*4
  649.     add.l    d4,d4
  650. grap.noshi5
  651.  
  652.     move.l    d7,-(sp)
  653.     move.w    pic_vew(a2),d6
  654.     move.l    #17,d0
  655.     move.l    #4,d1            ;ecs 1
  656.     move.l    #3,d7
  657.  
  658.     btst    #15,d6            ;hires ?
  659.     beq.s    grap.nohi3    
  660.     move.l    #17,d0            ;ecs 9
  661.     move.l    #4,d1            ;ecs 2
  662.     move.l    #2,d7
  663.     bra.s    grap.noshi3
  664. grap.nohi3
  665.     btst    #6,d6            ;super hires ?
  666.     beq.s    grap.noshi3    
  667.     move.l    #17,d0            ;ecs 9
  668.     move.l    #4,d1            ;ecs 2
  669.     move.l    #1,d7
  670. grap.noshi3
  671.     sub.w    d0,d3
  672.     lsr.w    #1,d3
  673.     move.w    d3,10(a1)        ;ddfstrt
  674.     
  675.     move.w    d4,d2            ;pic breedte in pixels
  676.     lsr.w    #4,d2            ;/16
  677.     sub.w    d1,d2            ;-1
  678.  
  679.     lsl.w    d7,d2            ;*8
  680.     add.w    d2,d3
  681.     move.w    d3,14(a1)        ;ddfstop
  682.     move.l    (sp)+,d7
  683.     
  684.     lea    pic_raw(a2),a0
  685.  
  686.     moveq.l    #0,d2
  687.     move.w    pic_dpt(a2),d2
  688.     sub.l    #1,d2
  689.     muls    pic_wid(a2),d2
  690.     add.w    d2,d5
  691.  
  692.     move.w    pic_vew(a2),d2        ;viewmode add
  693.     btst    #2,d2
  694.     beq.s    grap.nolace4
  695.  
  696.     moveq.l    #0,d2
  697.     move.w    pic_dpt(a2),d2
  698.     muls    pic_wid(a2),d2
  699.     add.w    d2,d5            ;interlace gedoe
  700. grap.nolace4
  701.  
  702.     lea    gracprbpl,a4        ;iffpln neerzetten
  703.     lea    gracprpln,a0        ;iffpln neerzetten
  704.     moveq.l    #0,d2
  705.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  706.     move.l    #8,d6            ;copper step !
  707.  
  708.     tst.l    curpic2            ;2de picture ?
  709.     bne.s    grap.pic2
  710. grap.nopic2
  711.     move.w    d5,34(a1)        ;modulo oneven zetten
  712.     bra    grap.nodpl
  713. grap.pic2
  714.     move.l    curpic2,a3        ;oneven plane
  715.     move.l    curpic2+4,a6        ;oneven plane
  716.     move.l    currot2,a5        ;oneven plane
  717.     clr.l    curpic2            ;mischien niet goed
  718.     clr.l    curpic2+4        ;mischien niet goed
  719.     clr.l    curpal2            ;mischien niet goed
  720.     clr.l    currot2            ;mischien niet goed
  721.  
  722.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  723.     beq.s    grap.nopic2
  724.     
  725.     cmp.l    #0,currot1        ;routine ?    
  726.     beq.s    grap.norot
  727.     cmp.l    currot1,a5        ;routine hetzelfde ?
  728.     beq.s    grap.nopic2
  729. grap.norot
  730.     cmp.b    #4,d2            ;> 16 kleuren ? (AGA)
  731.     bgt    grap.nopic2
  732.  
  733.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  734.     cmp.b    d2,d3            ;gelijke plnummers ?
  735.     bne.s    grap.nopic2
  736.     move.w    pic_vew(a2),d1
  737.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  738.     bne.s    grap.nopic2
  739.  
  740.     move.w    pic_vew(a2),d1        ;groter dan view test
  741.     btst    #6,d1            ;super hires ?
  742.     beq.s    grap.nohi2a
  743.     move.l    #vew_wid*4,d1
  744.     bra.s    grap.nohi2b
  745. grap.nohi2a
  746.     btst    #15,d1            ;hires ?
  747.     beq.s    grap.noshi2a
  748.     move.l    #vew_wid*2,d1
  749.     bra.s    grap.nohi2b
  750. grap.noshi2a
  751.     move.l    #vew_wid,d1
  752. grap.nohi2b
  753.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  754.     bgt.s    grap.small
  755.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  756.     bgt.s    grap.small
  757.  
  758.     move.w    pic_vew(a2),d1
  759.     btst    #2,d1
  760.     beq.s    grap.nolace8a
  761.     move.l    hogscr,d1
  762.     add.l    d1,d1
  763.     bra.s    grap.nolace8b
  764. grap.nolace8a
  765.     move.l    hogscr,d1
  766. grap.nolace8b
  767.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  768.     bgt.s    grap.small
  769.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  770.     bgt.s    grap.small
  771.     bra.s    grap.big
  772.  
  773. grap.small
  774.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  775.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  776.     bne    grap.nopic2
  777.     move.w    pic_wid(a2),d1
  778.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  779.     bne    grap.nopic2
  780.  
  781. grap.big
  782.     move.l    a3,curpic2        ;toch wel goed !
  783.     move.l    a6,curpic2+4
  784.     move.l    a3,curpal2
  785.     move.l    a5,currot2
  786.  
  787.     tst.b    dplctr            ;dual playfield al gezet ?
  788.     beq    grap.nocop
  789.  
  790.     move.w    30(a1),34(a1)        ;modulo copieren
  791.  
  792.     move.w    2(a4),d1        ;bplcon0
  793.     btst    #10,d1            ;al dual playfield ?
  794.     beq.s    grap.ta
  795.  
  796.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  797.     move.w    6(a0),14(a0)
  798.  
  799.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  800.     move.w    22(a0),30(a0)
  801.  
  802.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  803.     move.w    38(a0),46(a0)
  804.  
  805.     move.w    50(a0),58(a0)        ;plane 6>7 copieren
  806.     move.w    54(a0),62(a0)
  807.  
  808.     bra.s    grap.tb
  809. grap.ta
  810.     move.w    24(a0),58(a0)        ;plane 3>7 copieren
  811.     move.w    28(a0),62(a0)
  812.  
  813.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  814.     move.w    22(a0),46(a0)
  815.  
  816.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  817.     move.w    14(a0),30(a0)
  818.  
  819.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  820.     move.w    6(a0),14(a0)
  821.  
  822. grap.tb
  823.     move.l    #palette,a3        ;palette copieren
  824.  
  825.     move.w    #16-1,d1
  826. grap.pal
  827.     move.l    (a3)+,60(a3)
  828.     dbra    d1,grap.pal
  829.  
  830. grap.nocop
  831.     add.w    d3,d2            ;aantal bitplanes
  832.     cmp.w    #8,d2            ;8 bitplanes ?
  833.     blt    grap.no8planes2
  834.     move.w    #%10000,d2        ;only bit 4
  835.     bra    grap.8planes2
  836. grap.no8planes2
  837.     lsl.w    #8,d2
  838.     lsl.w    #4,d2
  839. grap.8planes2
  840.     or.w    #$400,d2        ;dual playfield aan
  841.     move.w    d2,2(a4)        ;bplcon0
  842.  
  843.     movem.l    d0-d7/a0-a6,-(sp)
  844.  
  845.     move.l    curpic,a2        ;animpic ?
  846.     move.l    curfrm,d7
  847.     cmp.l    #0,a2
  848.     bne.s    grap.noanipic
  849.  
  850.     move.l    curpic2,a2        ;normal pic ?
  851.     move.l    curfrm2,d7
  852.     cmp.l    #0,a2
  853.     beq.s    grap.nodplpic
  854.  
  855. grap.noanipic
  856.     add.l    d6,a0
  857.     add.w    d6,d6
  858.     bsr.s    grappln            ;a2,d6,d7,d0
  859. grap.nodplpic
  860.     movem.l    (sp)+,d0-d7/a0-a6
  861.     add.w    d6,d6
  862.     bra.s    grap.nodpla
  863.  
  864.  
  865. grap.nodpl                ;geen dual playfield
  866.     cmp.w    #8,d2            ;8 bitplanes ?
  867.     blt    grap.no8planes
  868.     move.w    #%10000,d2        ;only bit 4
  869.     bra    grap.8planes
  870. grap.no8planes
  871.     lsl.w    #8,d2
  872.     lsl.w    #4,d2
  873. grap.8planes
  874.     move.w    d2,2(a4)        ;bplcon0
  875.  
  876. grap.nodpla
  877.     move.w    d5,30(a1)        ;modulo even
  878.  
  879.     moveq.l    #0,d3
  880.     add.w    pic_vew(a2),d3        ;viewmode add
  881.     moveq.l    #0,d2
  882.     move.w    2(a4),d2
  883.     or.l    d3,d2
  884.  
  885.     ifd    gui
  886.     tst.b    genlck
  887.     bne    grap.genset
  888.     endc
  889.  
  890.     or.l    #$100,d2        ;genlock off ($302)
  891.  
  892.     ifd    gui
  893.     bra    grap.gencont
  894. grap.genset
  895.     or.l    #$102,d2        ;genlock on ($302)
  896. grap.gencont
  897.     endc
  898.     
  899.     move.w    d2,2(a4)
  900.     
  901.     bsr.s    grappln            ;a2,d6,d7,d0
  902.  
  903. grap.end
  904.     
  905.     movem.l    (sp)+,d0-d7/a0-a6
  906.     rts
  907.         
  908.  
  909.     ;sets on of the 2 possible pictures to the copper
  910.     ;handles interlace
  911.  
  912.     ;d7=framenummer
  913.     ;d6=copperliststap
  914.     ;d0=raw planes positie
  915.     ;a2=current picture
  916. grappln                    ;planes invullen 
  917.     movem.l    d0-d7/a0-a6,-(sp)
  918.  
  919.     lea    pic_raw(a2),a1
  920.     move.l    a1,d0            ;raw planes
  921.     
  922.     moveq.l    #0,d2            ;x*y
  923.     move.w    pic_wid(a2),d2
  924.     lsr.l    #1,d2            ;/2
  925.     moveq.l    #0,d3
  926.     move.w    pic_hgt(a2),d3
  927.     muls    d3,d2
  928.     
  929.     move.l    d2,d4
  930.     add.l    d2,d2
  931.  
  932.     move.w    pic_dpt(a2),d3
  933.     muls    d3,d4            ;hele picture size
  934.     muls    d7,d4            ;frame*size d7 !
  935.  
  936.     add.l    d4,d4
  937.  
  938.     add.l    d4,d0
  939.  
  940.     move.l    #vew_wid,d5        ;max x view
  941.     move.l    hogscr,d4        ;max y view
  942.     move.w    pic_vew(a2),d1        ;viewmode add
  943.     btst    #2,d1
  944.     beq.s    grappln.nolace
  945.     add.l    d4,d4            ;max y view
  946. grappln.nolace
  947.     btst    #15,d1            ;hires ?
  948.     beq.s    grappln.nohi
  949.     move.l    #vew_wid*2,d5        ;max x view
  950.     bra.s    grappln.noshi
  951. grappln.nohi
  952.     btst    #6,d1            ;super hires ?
  953.     beq.s    grappln.noshi
  954.     move.l    #vew_wid*4,d5        ;max x view
  955. grappln.noshi
  956.  
  957.     moveq.l    #0,d3            ;scherm centreren
  958.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  959.     cmp.w    d5,d3            ;breder dan scherm ?
  960.     ble.s    grappln.qa
  961.     sub.w    d5,d3            ;-scherm breedte
  962.     lsr.w    #2,d3            ;/4
  963.  
  964.     add.l    d3,d3
  965.  
  966.     add.l    d3,d0
  967. grappln.qa
  968.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  969.     cmp.w    d4,d3            ;hoger dan scherm ?
  970.     ble.s    grappln.qb
  971.     sub.w    d4,d3            ;-scherm breedte
  972.     lsr.w    #1,d3            ;/2
  973.     moveq.l    #0,d5
  974.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  975.     muls    pic_dpt(a2),d5
  976.     muls    d5,d3
  977.     add.l    d3,d0
  978. grappln.qb
  979.     moveq.l    #0,d2
  980.     move.w    pic_wid(a2),d2
  981.  
  982.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  983.     btst    #2,d5
  984.     beq.s    grappln.nolac7b
  985.  
  986.     move.w    $04(a6),d5        ;even/oneven ?
  987.     btst    #15,d5
  988.     beq.s    grappln.nolac7b
  989.     
  990.     moveq.l    #0,d3
  991.     move.w    pic_wid(a2),d3
  992.     muls    pic_dpt(a2),d3
  993.     add.l    d3,d0
  994. grappln.nolac7b
  995.  
  996.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  997.     tst.w    d1            ;0 planes ?
  998.     beq    grappln.end
  999.     sub.w    #1,d1
  1000. grappln.a
  1001.     move.w    d0,3*2(a0)
  1002.     swap    d0
  1003.     move.w    d0,1*2(a0)
  1004.     swap    d0
  1005.     add.l    d6,a0            ;d6=copper step !
  1006.     add.l    d2,d0
  1007.     dbra    d1,grappln.a
  1008.  
  1009.     cmp.w    #8,pic_dpt(a2)        ;8 planes ?
  1010.     bne    grappln.noham8
  1011.     btst    #3,pic_vew(a2)        ;ham ?
  1012.     beq    grappln.noham8
  1013.  
  1014.     move.w    -14(a0),d0        ;get 6
  1015.     move.w    -10(a0),d1
  1016.     move.w    -6(a0),d2        ;get 7
  1017.     move.w    -2(a0),d3
  1018.     move.w    -18(a0),-2(a0)        ;5>7
  1019.     move.w    -22(a0),-6(a0)        ;5>7
  1020.     move.w    -26(a0),-10(a0)        ;4>6
  1021.     move.w    -30(a0),-14(a0)        ;4>6
  1022.     move.w    -34(a0),-18(a0)        ;3>5
  1023.     move.w    -38(a0),-22(a0)        ;3>5
  1024.     move.w    -42(a0),-26(a0)        ;2>4
  1025.     move.w    -46(a0),-30(a0)        ;2>4
  1026.     move.w    -50(a0),-34(a0)        ;1>3
  1027.     move.w    -54(a0),-38(a0)        ;1>3
  1028.     move.w    -58(a0),-42(a0)        ;0>2
  1029.     move.w    -62(a0),-46(a0)        ;0>2
  1030.     move.w    d0,-62(a0)        ;6>0
  1031.     move.w    d1,-58(a0)        ;6>0
  1032.     move.w    d2,-54(a0)        ;7>1
  1033.     move.w    d3,-50(a0)        ;7>1
  1034. grappln.noham8
  1035.  
  1036. grappln.end
  1037.     movem.l    (sp)+,d0-d7/a0-a6
  1038.     rts
  1039.  
  1040.     ;sets palettes to palette-buffer
  1041.     
  1042. grac
  1043.     movem.l    d0-d7/a0-a6,-(sp)
  1044.  
  1045.     lea    curpal1,a3        ;palette 1
  1046.     move.l    #palette,a1
  1047.     bsr.s    gracfrm
  1048.  
  1049.     lea    curpal2,a3        ;palette 2 (dpl)
  1050.     move.l    #16*4+palette,a1
  1051.     bsr.s    gracfrm
  1052.     
  1053.     bsr    palctr            ;palette-buffer to copper
  1054. grac.end
  1055.     movem.l    (sp)+,d0-d7/a0-a6
  1056.     rts
  1057.         
  1058.     ;moves palette from picture to palette-buffer
  1059.  
  1060. gracfrm
  1061.     movem.l    d0-d7/a0-a6,-(sp)
  1062.     tst.l    (a3)            ;palette aanwezig ?
  1063.     beq.s    gracfrm.end
  1064.  
  1065.     move.l    (a3),a2            ;current palette
  1066.     
  1067.     cmp.l    #'PALE',(a2)        ;palette ?
  1068.     bne.s    gracfrm.pict
  1069.     lea    6(a2),a0        ;palette
  1070.     move.w    4(a2),d0        ;aantal kleuren
  1071.     bra.s    gracfrm.col
  1072. gracfrm.pict
  1073.     cmp.l    #'ANIM',(a2)        ;animatie ?
  1074.     bne.s    gracfrm.noanim
  1075.  
  1076.     moveq.l    #0,d1
  1077.     move.w    pic_ani(a2),d1
  1078.     bclr    #7,d1            ;behandelbit weghalen
  1079.  
  1080.     moveq.l    #0,d3
  1081.     move.w    pic_wid(a2),d3
  1082.     lsr.w    #1,d3            ;/2
  1083.     muls    pic_hgt(a2),d3
  1084.     muls    pic_dpt(a2),d3
  1085.  
  1086.     add.l    d3,d3
  1087.  
  1088.     add.l    #pic_raw,d3
  1089.     move.l    d3,d5
  1090.  
  1091.     btst    #0,d1
  1092.     bne.s    gracfrm.buf2
  1093.     moveq.l    #0,d5
  1094. gracfrm.buf2
  1095.     add.l    d5,a2
  1096. gracfrm.noanim
  1097.     lea    pic_pal(a2),a0        ;palette
  1098.     move.w    pic_palnum(a2),d0
  1099.  
  1100.     tst.w    d0            ;0 planes ?
  1101.     beq.s    gracfrm.end
  1102. gracfrm.col
  1103. gracfrm.fa
  1104.     move.l    (a0)+,(a1)+
  1105.     dbra    d0,gracfrm.fa
  1106. gracfrm.end
  1107.     movem.l    (sp)+,d0-d7/a0-a6
  1108.     rts
  1109.     
  1110.     ;handles colorcycling in the palette-buffer
  1111.  
  1112. palcycctr
  1113.     movem.l    d0-d7/a0-a6,-(sp)
  1114.  
  1115.     move.l    curpic1,a2        ;current raw
  1116.     cmp.l    #0,a2
  1117.     beq.s    palcycctr.qb
  1118.     lea    cycdel1,a3        ;cycle delays
  1119.     move.l    #paltab,a4
  1120.     bsr    palcyc
  1121. palcycctr.qb
  1122.     move.l    curpic2,a2        ;current raw
  1123.     cmp.l    #0,a2
  1124.     beq.s    palcycctr.c
  1125.     lea    cycdel2,a3        ;cycle delays
  1126.     move.l    #16*2+paltab,a4
  1127.     bsr    palcyc
  1128. palcycctr.c
  1129.     movem.l    (sp)+,d0-d7/a0-a6
  1130.     rts
  1131.     
  1132.     ;copies palette-buffer to copper
  1133.  
  1134. palctr
  1135.     movem.l    d0-d7/a0-a6,-(sp)
  1136.  
  1137.     lea    gracprcol,a1        ;AGA
  1138.     move.l    #palette,a0
  1139.     move.l    #paltab,a2
  1140.     move.w    #8-1,d6
  1141. palctr.e
  1142.     move.w    #32-1,d7
  1143. palctr.d
  1144.     move.w    (a2)+,d0            ;get cycle-position
  1145.     move.w    (a0,d0),6(a1)            ;high RGB bits
  1146.     move.w    2(a0,d0),((32+1)*4)+6(a1)    ;low RGB bits
  1147.     add.l    #4,a1
  1148.     dbra    d7,palctr.d
  1149.     add.l    #((32+2)*4),a1
  1150.     dbra    d6,palctr.e
  1151. palctr.end
  1152.     movem.l    (sp)+,d0-d7/a0-a6
  1153.     rts
  1154.  
  1155.     ;reset palette tabel, for proper color cycling
  1156.  
  1157. paltabres
  1158.     movem.l    d0-d7/a0-a6,-(sp)
  1159.     lea    paltab,a0
  1160.     clr.l    d0
  1161.     move.w    #256-1,d1
  1162. paltabres.a
  1163.     move.w    d0,(a0)+
  1164.     add.w    #4,d0            ;aga color words, high RGB + low RGB
  1165.     dbra    d1,paltabres.a
  1166. paltabres.end
  1167.     movem.l    (sp)+,d0-d7/a0-a6
  1168.     rts
  1169.  
  1170.     ;colorcyclinghandling of a palette
  1171.  
  1172. palcyc
  1173.     movem.l    d0-d7/a0-a6,-(sp)
  1174.     move.w    #4-1,d7            ;4 cycles
  1175. palcyc.d
  1176.     tst.w    (a3)+            ;delay klaar ?
  1177.     bne.s    palcyc.c
  1178.     
  1179.     moveq.l    #0,d1
  1180.     move.b    pic_cycstr(a2),d1    ;start color
  1181.     lsl.b    #1,d1        ;*2
  1182.  
  1183.     moveq.l    #0,d2
  1184.     move.b    pic_cycend(a2),d2    ;end color
  1185.     lsl.b    #1,d2        ;*2
  1186.  
  1187.     moveq.l    #0,d3
  1188.     move.b    pic_cycadd(a2),d3    ;richting
  1189.  
  1190.     move.l    a4,a0            ;palette pointer
  1191.     move.l    a0,a1
  1192.     add.l    d1,a0            ;startcolor
  1193.     add.l    d2,a1            ;endcolor
  1194.     
  1195.     cmp.b    #1,d3            ;omhoog
  1196.     beq.s    palcyc.up    
  1197.     cmp.b    #3,d3            ;omlaag
  1198.     beq.s    palcyc.down
  1199.     bra.s    palcyc.i
  1200.  
  1201. palcyc.up                ;kleuren copieren
  1202.     move.w    (a1),d4            ;laatst color bewaren
  1203. palcyc.f                ;kleuren copieren
  1204.     cmp.l    a0,a1
  1205.     beq.s    palcyc.fa
  1206.     move.w    -(a1),2(a1)
  1207.     bra.s    palcyc.f
  1208. palcyc.fa
  1209.     move.w    d4,(a1)
  1210.     bra.s    palcyc.g    
  1211.     
  1212. palcyc.down
  1213.     move.w    (a0),d4            ;laatst color bewaren
  1214. palcyc.h                ;kleuren copieren
  1215.     cmp.l    a0,a1
  1216.     beq.s    palcyc.ha
  1217.     move.w    2(a0),(a0)+
  1218.     bra.s    palcyc.h
  1219. palcyc.ha
  1220.     move.w    d4,(a1)
  1221.  
  1222. palcyc.g
  1223.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1224.     bra.s    palcyc.i
  1225. palcyc.c
  1226.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1227. palcyc.i
  1228.     add.l    #4,a2            ;next cycle info
  1229.     dbra    d7,palcyc.d
  1230.  
  1231. palcyc.qb
  1232.     movem.l    (sp)+,d0-d7/a0-a6
  1233.     rts
  1234.  
  1235.  
  1236.  
  1237. ;    SECTION    variabelen,DATA_c
  1238.  
  1239.     cnop    0,2
  1240. curtsk        dc.l    0
  1241. tskpri        dc.l    0
  1242. duplok        dc.l    0
  1243. inttel        dc.l    0
  1244. intdel        dc.l    0
  1245.  
  1246. form        dc.l    0
  1247. ifffil        dc.l    0
  1248. intvbold    dc.l    0
  1249. inttbeold    dc.l    0
  1250. patpos        dc.l    0
  1251. gfxlib        dc.l    0
  1252. doslib        dc.l    0
  1253. wbview      dc.l    0
  1254. mt_data        dc.l    0
  1255. memvid        dc.l    0
  1256. oldcprlist    dc.l    0
  1257. hogscr        dc.l    vew_hgt
  1258.  
  1259. inspos        dc.l    -1
  1260. anispd1        dc.w    1    ;nooit op 0 !
  1261. anispd2        dc.w    1
  1262.  
  1263.         cnop    0,2
  1264. varclr.s            ;start wissen
  1265. oldrot        dc.l    0
  1266. curpic        dc.l    0
  1267. curfrm        dc.l    0
  1268. cycdel1        ds.w    4
  1269. cycdel2        ds.w    4
  1270.  
  1271. rotinf1        dc.w    0
  1272. rotinf2        dc.w    0
  1273.  
  1274. effspd        dc.w    0
  1275. efflop        dc.b    0
  1276. anilop1        dc.b    0
  1277. anilop2        dc.b    0
  1278. anipal1        dc.b    0
  1279. anipal2        dc.b    0
  1280. rotdpl        dc.b    1
  1281. rottrg        dc.b    1
  1282. dplctr        dc.b    0
  1283.         cnop    0,2
  1284.  
  1285. insdat        ds.l    4
  1286. inspri        dc.l    0
  1287. instel        dc.w    0
  1288.  
  1289. cureff        dc.l    0
  1290. efftel        dc.w    0
  1291.  
  1292. curpal1        dc.l    0
  1293. curpal2        dc.l    0
  1294. currot1        dc.l    0
  1295. currot2        dc.l    0
  1296. curpic1        dc.l    0
  1297. curpic2        dc.l    0
  1298. anitel1        dc.w    0
  1299. anitel2        dc.w    0
  1300. curfrm1        dc.l    0
  1301. curfrm2        dc.l    0
  1302. oldfrm1        dc.l    0
  1303. oldfrm2        dc.l    0
  1304.  
  1305. varclr.e
  1306.         dc.l    0            ;wisruimte
  1307.     
  1308. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1309.     
  1310. ntscmode    dc.b    0
  1311. end        dc.b    0
  1312.  
  1313. pronam    dc.b    'VideoTracker',0
  1314.     cnop    0,2
  1315. dosnam    dc.b    'dos.library',0
  1316.     cnop    0,4
  1317. gfxnam    dc.b    'graphics.library',0
  1318.     cnop    0,4
  1319.     
  1320.     cnop    0,4
  1321. gra.s            ;copperlist edit buffer
  1322. gracprscr
  1323.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1324. gracprbpl
  1325.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1326.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1327. gracprpln
  1328.     dc.w    $e0,$0000,$e2,$0000    ;1
  1329.     dc.w    $e4,$0000,$e6,$0000    ;2
  1330.     dc.w    $e8,$0000,$ea,$0000    ;3
  1331.     dc.w    $ec,$0000,$ee,$0000    ;4
  1332.     dc.w    $f0,$0000,$f2,$0000    ;5
  1333.     dc.w    $f4,$0000,$f6,$0000    ;6
  1334.     dc.w    $f8,$0000,$fa,$0000    ;7
  1335.     dc.w    $fc,$0000,$fe,$0000    ;8
  1336. gracprcol
  1337.     dc.w    $106,$0000
  1338.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1339.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1340.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1341.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1342.     dc.w    $106,$0200
  1343.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1344.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1345.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1346.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1347.  
  1348.     dc.w    $106,$2000
  1349.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1350.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1351.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1352.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1353.     dc.w    $106,$2200
  1354.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1355.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1356.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1357.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1358.  
  1359.     dc.w    $106,$4000
  1360.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1361.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1362.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1363.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1364.     dc.w    $106,$4200
  1365.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1366.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1367.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1368.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1369.  
  1370.     dc.w    $106,$6000
  1371.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1372.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1373.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1374.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1375.     dc.w    $106,$6200
  1376.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1377.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1378.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1379.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1380.  
  1381.     dc.w    $106,$8000
  1382.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1383.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1384.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1385.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1386.     dc.w    $106,$8200
  1387.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1388.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1389.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1390.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1391.  
  1392.     dc.w    $106,$a000
  1393.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1394.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1395.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1396.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1397.     dc.w    $106,$a200
  1398.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1399.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1400.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1401.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1402.  
  1403.     dc.w    $106,$c000
  1404.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1405.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1406.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1407.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1408.     dc.w    $106,$c200
  1409.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1410.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1411.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1412.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1413.  
  1414.     dc.w    $106,$e000
  1415.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1416.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1417.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1418.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1419.     dc.w    $106,$e200
  1420.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1421.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1422.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1423.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1424.  
  1425.     dc.w    $106,$1000
  1426.  
  1427. cprjmp
  1428.     dc.w    $080,0,$082,0
  1429. gra.e
  1430. gra.ql    equ    gra.e-gra.s        ;block lengte
  1431.  
  1432. cpr                    ;real copperlist
  1433.     dc.w    $0001,$fffe
  1434.     dc.w    $09c,$8001        ;tbeint
  1435. cprspr
  1436.     dc.w    $120,$0000,$122,$0000
  1437.     dc.w    $124,$0000,$126,$0000
  1438.     dc.w    $128,$0000,$12a,$0000
  1439.     dc.w    $12c,$0000,$12e,$0000
  1440.     dc.w    $130,$0000,$132,$0000
  1441.     dc.w    $134,$0000,$136,$0000
  1442.     dc.w    $138,$0000,$13a,$0000
  1443.     dc.w    $13c,$0000,$13e,$0000
  1444.  
  1445. cprbuf
  1446.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1447.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1448.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1449.  
  1450.     dc.w    $e0,$0000,$e2,$0000    ;0
  1451.     dc.w    $e4,$0000,$e6,$0000    ;1
  1452.     dc.w    $e8,$0000,$ea,$0000    ;2
  1453.     dc.w    $ec,$0000,$ee,$0000    ;3
  1454.     dc.w    $f0,$0000,$f2,$0000    ;4
  1455.     dc.w    $f4,$0000,$f6,$0000    ;5
  1456.     dc.w    $f8,$0000,$fa,$0000    ;6
  1457.     dc.w    $fc,$0000,$fe,$0000    ;7
  1458.  
  1459.     dc.w    $106,$0000
  1460.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1461.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1462.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1463.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1464.     dc.w    $106,$0200
  1465.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1466.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1467.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1468.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1469.  
  1470.     dc.w    $106,$2000
  1471.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1472.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1473.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1474.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1475.     dc.w    $106,$2200
  1476.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1477.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1478.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1479.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1480.  
  1481.     dc.w    $106,$4000
  1482.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1483.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1484.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1485.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1486.     dc.w    $106,$4200
  1487.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1488.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1489.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1490.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1491.  
  1492.     dc.w    $106,$6000
  1493.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1494.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1495.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1496.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1497.     dc.w    $106,$6200
  1498.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1499.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1500.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1501.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1502.  
  1503.     dc.w    $106,$8000
  1504.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1505.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1506.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1507.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1508.     dc.w    $106,$8200
  1509.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1510.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1511.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1512.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1513.  
  1514.     dc.w    $106,$a000
  1515.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1516.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1517.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1518.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1519.     dc.w    $106,$a200
  1520.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1521.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1522.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1523.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1524.  
  1525.     dc.w    $106,$c000
  1526.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1527.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1528.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1529.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1530.     dc.w    $106,$c200
  1531.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1532.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1533.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1534.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1535.  
  1536.     dc.w    $106,$e000
  1537.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1538.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1539.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1540.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1541.     dc.w    $106,$e200
  1542.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1543.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1544.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1545.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1546.  
  1547.     dc.w    $106,$1000
  1548.  
  1549.     dc.w    $080,0,$082,0
  1550. cprbuf.e
  1551.  
  1552.     dc.w    $088,$0000        ;copjmp2
  1553.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1554. cprbck
  1555. sprdat
  1556.     dc.w    $ffff,$fffe
  1557.  
  1558. palette        ds.l    256        ;palette 24-bits, far out !
  1559. paltab        ds.w    256        ;palette cycle-tabel
  1560.  
  1561.     cnop    0,2
  1562. var    ds.b    $300    ;variabelen voor routines
  1563.  
  1564.     
  1565. ;    SECTION    10,CODE_C
  1566.         endc
  1567.  
  1568. ; this is the routine-source
  1569. ;**********************************************************************
  1570.  
  1571. rotpic_y    equ    288
  1572. rotpic_yp    equ    36
  1573. rotpic_x    equ    48
  1574.  
  1575. ;    Input:
  1576. ;    a0=variabelen tabel
  1577. ;    d0=routinfo
  1578.  
  1579. ;    Output:
  1580. ;    a0=picture
  1581. ;    d1=copperlist
  1582.  
  1583.     SECTION    3,CODE
  1584.  
  1585.     cnop    0,8
  1586. rot
  1587. rotp
  1588.     ifnd    ocs
  1589.     dc.l    'ROTA'
  1590.     endc
  1591.     ifd    ocs
  1592.     dc.l    'ROTO'
  1593.     endc
  1594.  
  1595.     movem.l    d2-d7/a1-a6,-(sp)
  1596.  
  1597.     lea    ($dff000).l,a6        ;hardware
  1598.     lea    rot(pc),a5        ;prog base
  1599.  
  1600.     ifd    rout
  1601.     move.l    #rotc,a2
  1602.     endc
  1603.  
  1604.     move.l    a2,rotchp-rot(a5)
  1605.  
  1606. ;    move.l    #32768,d2
  1607. ;    bsr    getd7
  1608. ;
  1609. ;    move.l    #4,d2
  1610. ;    bsr    getd7
  1611.  
  1612. rot.end
  1613.     bsr    rotlop
  1614.  
  1615.     lea    rotpal1(pc),a0            ;palette 1
  1616.     move.l    rotbuf-rot(a5),d1        ;double buffering
  1617.     add.l    d1,a0
  1618. ;    eor.l    #rotpal_l,rotbuf-rot(a5)    ;buffer switch
  1619.  
  1620.     clr.l    d1                ;no copperlist
  1621. ;    move.l    #rotpt1,a0
  1622.     movem.l    (sp)+,d2-d7/a1-a6
  1623.     rts
  1624.  
  1625. ;getd7
  1626. ;    move.w    d0,d1
  1627. ;    divs    d2,d1
  1628. ;    and.l    #$ffff,d1
  1629. ;    move.l    d1,d7
  1630. ;    muls    d2,d1
  1631. ;    sub.w    d1,d0
  1632. ;    move.l    d0,d6
  1633. ;    add.l    #1,d7
  1634. ;    rts
  1635.  
  1636. rotlop
  1637.     movem.l    d0-d7/a0-a6,-(sp)
  1638.  
  1639.     move.l    var_rottrg(a0),a4    ;opnieuw getriggerd ?
  1640.     tst.b    (a4)
  1641.     beq    rotlop.nonewset
  1642.     clr.b    (a4)
  1643.  
  1644.     clr.l    rotcolpos-rot(a5)    ;fade position
  1645.  
  1646.     move.l    var_cols1(a0),a1
  1647.     move.l    var_cols1+4(a0),a2
  1648.  
  1649.     cmp.l    #0,a1            ;colorset ?
  1650.     beq    rotlop.nonewset
  1651.     cmp.l    #0,a2            ;colorset ?
  1652.     beq    rotlop.nonewset
  1653.  
  1654.     cmp.l    a1,a2            ;zelfde ?
  1655.     beq    rotlop.nonewset
  1656.     
  1657.     move.w    4(a1),d1
  1658.     cmp.w    4(a2),d1        ;aantal kleuren gelijk ?
  1659.     bne    rotlop.nonewset
  1660.     
  1661.     tst.w    d0            ;routinemode = 0 ?
  1662.     beq    rotlop.nonewset
  1663.     
  1664.     move.l    a2,rotcolset1-rot(a5)
  1665.     move.l    a1,rotcolset2-rot(a5)
  1666.     clr.l    rotcolnum-rot(a5)    ;aantal kleuren
  1667.     clr.l    rotcolspd-rot(a5)
  1668.     clr.l    rotcolpos-rot(a5)
  1669.     move.w    d1,2+rotcolnum-rot(a5)    ;aantal kleuren
  1670.     move.w    d0,2+rotcolspd-rot(a5)
  1671.     move.w    d0,2+rotcolpos-rot(a5)
  1672.     
  1673.     lea    rotpal1(pc),a1
  1674.     move.w    d1,4(a1)
  1675.     lea    rotpal2(pc),a1
  1676.     move.w    d1,4(a1)
  1677.  
  1678.     move.l    rotcolset1-rot(a5),a0    ;colorset 1 RGB extract
  1679.     add.l    #6,a0
  1680.     lea    pal1r(pc),a1
  1681.     lea    pal1g(pc),a2
  1682.     lea    pal1b(pc),a3
  1683.     bsr    getcol
  1684.  
  1685.     move.l    rotcolset2-rot(a5),a0    ;colorset 2 RGB extract
  1686.     add.l    #6,a0
  1687.     lea    pal2r(pc),a1
  1688.     lea    pal2g(pc),a2
  1689.     lea    pal2b(pc),a3
  1690.     bsr    getcol
  1691.  
  1692.     move.l    rotcolspd-rot(a5),d3    ;fade speed
  1693.     move.l    rotcolnum-rot(a5),d2    ;aantal kleuren
  1694.     
  1695.     move.l    a5,-(sp)
  1696.  
  1697.     lea    pal1r(pc),a0    ;calculate add-step
  1698.     lea    pal2r(pc),a1
  1699.     lea    pal1g(pc),a2
  1700.     lea    pal2g(pc),a3
  1701.     lea    pal1b(pc),a4
  1702.     lea    pal2b(pc),a5
  1703.  
  1704. getadd.a
  1705.     move.l    (a0)+,d0
  1706.     move.l    (a1)+,d1
  1707.     sub.l    d0,d1
  1708.     divs    d3,d1
  1709.     ext.l    d1
  1710.     move.l    d1,-4(a1)
  1711.  
  1712.     move.l    (a2)+,d0
  1713.     move.l    (a3)+,d1
  1714.     sub.l    d0,d1
  1715.     divs    d3,d1
  1716.     ext.l    d1
  1717.     move.l    d1,-4(a3)
  1718.  
  1719.     move.l    (a4)+,d0
  1720.     move.l    (a5)+,d1
  1721.     sub.l    d0,d1
  1722.     divs    d3,d1
  1723.     ext.l    d1
  1724.     move.l    d1,-4(a5)
  1725.  
  1726.     dbra    d2,getadd.a
  1727.  
  1728.     move.l    (sp)+,a5
  1729.  
  1730. rotlop.nonewset
  1731.     tst.l    rotcolpos-rot(a5)    ;fade position
  1732.     beq    rotlop.end
  1733.     sub.l    #1,rotcolpos-rot(a5)    ;fade position
  1734.  
  1735.     lea    rotpal1(pc),a6        ;palette 1
  1736.     move.l    rotbuf-rot(a5),d1    ;double buffering
  1737.     add.l    d1,a6
  1738.     add.l    #6,a6
  1739.  
  1740.     move.l    rotcolnum-rot(a5),d4    ;aantal kleuren
  1741.  
  1742.     move.l    a5,-(sp)
  1743.  
  1744.     lea    pal1r(pc),a0
  1745.     lea    pal2r(pc),a1
  1746.     lea    pal1g(pc),a2
  1747.     lea    pal2g(pc),a3
  1748.     lea    pal1b(pc),a4
  1749.     lea    pal2b(pc),a5
  1750.  
  1751. getpal.a
  1752.     move.l    (a0)+,d0
  1753.     move.l    (a1)+,d1
  1754.     add.l    d1,d0
  1755.     move.l    d0,-4(a0)
  1756.     lsr.l    #7,d0
  1757.  
  1758.     ifnd    ocs
  1759.     bfexts    d0{24:4},d1
  1760.     bfins    d1,-2(a6){20:4}
  1761.     bfexts    d0{28:4},d1
  1762.     bfins    d1,(a6){20:4}
  1763.     endc
  1764.     
  1765.     ifd    ocs
  1766.     lsl.w    #4,d0
  1767.     and.w    #$f00,d0
  1768.     move.w    d0,d2
  1769.     endc
  1770.     
  1771.     move.l    (a2)+,d0
  1772.     move.l    (a3)+,d1
  1773.     add.l    d1,d0
  1774.     move.l    d0,-4(a2)
  1775.     lsr.l    #7,d0
  1776.  
  1777.     ifnd    ocs
  1778.     bfexts    d0{24:4},d1
  1779.     bfins    d1,-2(a6){24:4}
  1780.     bfexts    d0{28:4},d1
  1781.     bfins    d1,(a6){24:4}
  1782.     endc
  1783.     
  1784.     ifd    ocs
  1785.     and.w    #$0f0,d0
  1786.     or.w    d0,d2
  1787.     endc
  1788.     
  1789.     move.l    (a4)+,d0
  1790.     move.l    (a5)+,d1
  1791.     add.l    d1,d0
  1792.     move.l    d0,-4(a4)
  1793.     lsr.l    #7,d0
  1794.  
  1795.     ifnd    ocs
  1796.     bfexts    d0{24:4},d1
  1797.     bfins    d1,-2(a6){28:4}
  1798.     bfexts    d0{28:4},d1
  1799.     bfins    d1,(a6){28:4}
  1800.     add.l    #4,a6
  1801.     endc
  1802.  
  1803.     ifd    ocs
  1804.     lsr.w    #4,d0
  1805.     and.w    #$00f,d0
  1806.     or.w    d0,d2
  1807.     move.w    d2,(a6)+
  1808.     endc
  1809.     
  1810.     dbra    d4,getpal.a
  1811.  
  1812.     move.l    (sp)+,a5
  1813.  
  1814. rotlop.end
  1815.     movem.l    (sp)+,d0-d7/a0-a6
  1816.     rts
  1817.  
  1818. getcol
  1819.     movem.l    d0-d7/a0-a6,-(sp)
  1820.     move.l    rotcolnum-rot(a5),d0    ;aantal kleuren
  1821. getcol.a
  1822.     clr.l    d1            ;get red
  1823.  
  1824.     ifnd    ocs
  1825.     bfexts    (a0){4:4},d2
  1826.     bfins    d2,d1{24:4}
  1827.     bfexts    (a0){20:4},d2
  1828.     bfins    d2,d1{28:4}
  1829.     endc
  1830.  
  1831.     ifd    ocs
  1832.     move.w    (a0)+,d2
  1833.     move.w    d2,d1
  1834.     and.w    #$f00,d1
  1835.     lsr.w    #4,d1
  1836.     endc
  1837.  
  1838.     lsl.l    #7,d1
  1839.     move.l    d1,(a1)
  1840.     add.l    #4,a1
  1841.  
  1842.     clr.l    d1            ;get green
  1843.  
  1844.     ifnd    ocs
  1845.     bfexts    (a0){8:4},d2
  1846.     bfins    d2,d1{24:4}
  1847.     bfexts    (a0){24:4},d2
  1848.     bfins    d2,d1{28:4}
  1849.     endc
  1850.     
  1851.     ifd    ocs
  1852.     move.w    d2,d1
  1853.     and.w    #$0f0,d1
  1854.     endc
  1855.  
  1856.     lsl.l    #7,d1
  1857.     move.l    d1,(a2)
  1858.     add.l    #4,a2
  1859.  
  1860.     clr.l    d1            ;get blue
  1861.  
  1862.     ifnd    ocs
  1863.     bfexts    (a0){12:4},d2
  1864.     bfins    d2,d1{24:4}
  1865.     bfexts    (a0){28:4},d2
  1866.     bfins    d2,d1{28:4}
  1867.     endc
  1868.     
  1869.     ifd    ocs
  1870.     move.w    d2,d1
  1871.     and.w    #$00f,d1
  1872.     lsl.w    #4,d1
  1873.     endc
  1874.  
  1875.     lsl.l    #7,d1
  1876.     move.l    d1,(a3)
  1877.     add.l    #4,a3
  1878.  
  1879.     ifnd    ocs
  1880.     add.l    #4,a0
  1881.     endc
  1882.         
  1883.     dbra    d0,getcol.a
  1884.     movem.l    (sp)+,d0-d7/a0-a6
  1885.     rts
  1886.  
  1887. rotchp        dc.l    0
  1888. rotbuf        dc.l    0
  1889. rotcolset1    dc.l    0
  1890. rotcolset2    dc.l    0
  1891. rotcolspd    dc.l    0
  1892. rotcolnum    dc.l    0
  1893. rotcolpos    dc.l    0
  1894.  
  1895. pal1r        ds.l    256
  1896. pal1g        ds.l    256
  1897. pal1b        ds.l    256
  1898.  
  1899. pal2r        ds.l    256
  1900. pal2g        ds.l    256
  1901. pal2b        ds.l    256
  1902.  
  1903.         cnop    0,8
  1904. rotpal1
  1905.         dc.l    'PALE'
  1906.         dc.w    0
  1907.         ifnd    ocs
  1908.         ds.l    256
  1909.         endc
  1910.         ifd    ocs
  1911.         ds.w    256
  1912.         endc
  1913. rotpal2        
  1914.         dc.l    'PALE'
  1915.         dc.w    0
  1916.         ifnd    ocs
  1917.         ds.l    256
  1918.         endc
  1919.         ifd    ocs
  1920.         ds.w    256
  1921.         endc
  1922.  
  1923. rotpal_l    equ    rotpal2-rotpal1
  1924.  
  1925. rotp.e
  1926.  
  1927.     SECTION    3,CODE_C
  1928.  
  1929.     cnop    0,8
  1930. rotc
  1931.     ifnd    ocs
  1932.     dc.l    'ROTA'
  1933.     endc
  1934.     ifd    ocs
  1935.     dc.l    'ROTO'
  1936.     endc
  1937.     rts
  1938.     
  1939. rotc.e
  1940. rot.e
  1941.  
  1942. ;**********************************************************************
  1943.  
  1944.     ifd    rout
  1945.     cnop    0,8
  1946. rotst1    incbin    'w:effectaga/gridgr_256.set'
  1947.     cnop    0,8
  1948. rotst2    incbin    'w:effectaga/grid4_256.set'
  1949.     cnop    0,8
  1950. rotpt1    incbin    'w:effectaga/grid16*16_256.bru'
  1951.     endc
  1952.